package com.baomidou.ant.utils;

import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory;

/**
 * 邮箱工具
 */
public class MailUtils {

    //发送验证码邮件
    public static void sendMail(String to, String vcode) throws Exception {
        //先判断是qq邮箱还是网易邮箱
        if (MyStringUtils.cutStr(to, 7).equals("@qq.com")) {

            //设置发送邮件的主机  smtp.qq.com

            String host = "smtp.qq.com";

            //1.创建连接对象，连接到邮箱服务器

            Properties props = System.getProperties();

            //Properties 用来设置服务器地址，主机名 。。 可以省略

            //设置邮件服务器

            props.setProperty("mail.smtp.host", host);

            props.put("mail.smtp.auth", "true");

            //SSL加密

            MailSSLSocketFactory sf = new MailSSLSocketFactory();

            sf.setTrustAllHosts(true);

            props.put("mail.smtp.ssl.enable", "true");

            props.put("mail.smtp.ssl.socketFactory", sf);

            //props：用来设置服务器地址，主机名；Authenticator：认证信息

            Session session = Session.getDefaultInstance(props, new Authenticator() {

                @Override

                //通过密码认证信息

                protected PasswordAuthentication getPasswordAuthentication() {

                    //new PasswordAuthentication(用户名, password);

                    //用户名密码登录到邮箱服务器,发送邮件
                    return new PasswordAuthentication("2315544970@qq.com", "lswoimsnwzoadjdd");

                }

            });

            try {

                Message message = new MimeMessage(session);

                //2.1设置发件人：

                message.setFrom(new InternetAddress("2315544970@qq.com"));

                //2.2设置收件人 这个TO就是收件人

                message.setRecipient(RecipientType.TO, new InternetAddress(to));

                //2.3邮件的主题

                message.setSubject("答个爽实名验证码");

                //2.4设置邮件的正文 第一个参数是邮件的正文内容 第二个参数是：是文本还是html的连接
                message.setContent("<h1>来自答个爽网站验证码邮件,请接收你的验证码：</h1><h3>你的验证码是：" + vcode + "，请妥善保管好你的验证码！验证码有效期为2分钟！</h3>", "text/html;charset=UTF-8");
                //3.发送一封激活邮件
                Transport.send(message);

            } catch (MessagingException mex) {

                mex.printStackTrace();

            }

        }else if(MyStringUtils.cutStr(to, 7).equals("126.com") || MyStringUtils.cutStr(to, 7).equals("163.com")){
            //设置发送邮件的主机  smtp.126.com

            String host = "smtp.126.com";

            //1.创建连接对象，连接到邮箱服务器

            Properties props = System.getProperties();

            //Properties 用来设置服务器地址，主机名 。。 可以省略

            //设置邮件服务器

            props.setProperty("mail.smtp.host", host);

            props.put("mail.smtp.auth", "true");

            //SSL加密

            MailSSLSocketFactory sf = new MailSSLSocketFactory();

            sf.setTrustAllHosts(true);

            props.put("mail.smtp.ssl.enable", "true");

            props.put("mail.smtp.ssl.socketFactory", sf);

            //props：用来设置服务器地址，主机名；Authenticator：认证信息

            Session session = Session.getDefaultInstance(props, new Authenticator() {

                @Override

                //通过密码认证信息

                protected PasswordAuthentication getPasswordAuthentication() {

                    //new PasswordAuthentication(用户名, password);

                    //用户名密码登录到邮箱服务器,发送邮件

                    return new PasswordAuthentication("zbb_001@126.com", "DGQVTTYFDMXVRBLF");

                }

            });

            try {

                Message message = new MimeMessage(session);

                //2.1设置发件人：

                message.setFrom(new InternetAddress("zbb_001@126.com"));

                //2.2设置收件人 这个TO就是收件人

                message.setRecipient(RecipientType.TO, new InternetAddress(to));

                //2.3邮件的主题

                message.setSubject("答个爽实名验证码");

                //2.4设置邮件的正文 第一个参数是邮件的正文内容 第二个参数是：是文本还是html的连接
                message.setContent("<h1>来自答个爽网站验证码邮件,请接收你的验证码：</h1><h3>你的验证码是：" + vcode + "，请妥善保管好你的验证码！验证码有效期为2分钟！</h3>", "text/html;charset=UTF-8");
                //3.发送一封激活邮件
                Transport.send(message);

            } catch (MessagingException mex) {

                mex.printStackTrace();

            }
        }
    }



}